package com.fastloan.safe.mgt.root.service;

import com.fastloan.safe.mgt.root.model.CmDefResMenu;
import com.fastloan.safe.mgt.root.model.vo.DefMenuTreeVo;
import com.fastloan.safe.mgt.root.model.vo.DefMenuVo;
import com.kawins.base.BaseService;

import java.util.List;
import java.util.Map;

/**
 * @author rankai
 *         createTime 2017-09-2017/9/28 10:48
 */
public interface CmDefResMenuService extends BaseService<CmDefResMenu> {

    String TOP_MENU_PARENT_ID = "0";

    /**
     * 获得全部菜单的列表,不带分页(带层级关系)
     *
     * @param map
     * @param menuId 菜单ID
     * @param isLast 是否为进入下一级请求 0是
     * @return
     */
    List<DefMenuVo> pageListNoPage(Map<String, Object> map, String menuId, int isLast);

    /**
     * 增加菜单,带排序
     *
     * @param defResMenu
     */
    void insertForShort(CmDefResMenu defResMenu);

    /**
     * 编辑菜单,包括排序
     *
     * @param defResMenu
     */
    void updateForSort(CmDefResMenu defResMenu);

    /**
     * 获取当前登陆用户的菜单
     *
     * @return
     */
    List<DefMenuTreeVo> selectMenuListByRole();

    /**
     * 根据用户ID获得用户菜单
     *
     * @param userId
     * @param isTree true:带层级
     * @return
     */
    List<DefMenuTreeVo> selectMenuListForAll(String userId, boolean isTree);

    /**
     * 获取全部菜单数据,带name搜索
     *
     * @param name
     * @return
     */
    List<DefMenuVo> paramForMenu(String name);

    /**
     * 根据功能ID获取菜单资源
     *
     * @param defFunId
     * @return
     */
    List<CmDefResMenu> selectDefMenuResByFunId(String defFunId);


    /**
     * 删除菜单操作
     *
     * @param cmDefResMenuId
     */
    void deleteAll(String cmDefResMenuId);
}
